package com.tedu.API.list;

import java.util.Collection;

/*           测试:
        *        ①创建父类: Fruit---属性:名字  | 方法: 获取名称  | 构造器
        *        ②创建两个子类:Apple,Orange---构造器:传食魂名字
        *        ③创建类: TestJob    泛型  ?  extends  父类
        *        约束---静态方法  printFruit()
        *        约束要求: 约束只能是继承父类的子类才可以使用
        *        ④单元测试: testE()测试---约束是否限制成功
        *    实际开发应用中，高级程序员制定!
        */
public class Fruit {
    private String name;  //私有属性  name   水果名称

    public Fruit(String name) {  //获取名字
        this.name = name;
    }

    public String getName(){  //有参构造器
        return name;
    }
}
//创建两个子类:Apple,Orange继承Fruit
class Apple extends Fruit{
    public Apple() {  //Apple a=new Apple();  打印水果名称
        super("苹果");
    }
}
class Orange extends Fruit{
    public Orange() {
        super("橘子");
    }
}
//创建TestJob类---静态方法  printFruit:添加约束: 传入类型一定是父类的子类
class TestJob{    //   ?  【任意类型】   extends  Fruit
                  //传入类型必须继承与Fruit父类
    public static void printFruit(Collection<? extends Fruit> furits){
             //增强for循环: 父类Fruit  名称
        for(Fruit fruit:furits){   //获取继承【Apple,Orange】与父类的功能
            //打印对应对象名称
            System.out.println(fruit.getName());
        }
    }
}

//测试: 上界限定: 一定继承Fruit【Pear 不继承Fruit】
class pear{

}


